// 省份名称映射表
const provinceMap = {
  '北京': ['北京市', '北京'],
  '天津': ['天津市', '天津'],
  '河北': ['河北省', '河北'],
  '山西': ['山西省', '山西'],
  '内蒙古': ['内蒙古自治区', '内蒙古'],
  '辽宁': ['辽宁省', '辽宁'],
  '吉林': ['吉林省', '吉林'],
  '黑龙江': ['黑龙江省', '黑龙江'],
  '上海': ['上海市', '上海'],
  '江苏': ['江苏省', '江苏', '南京', '苏州', '无锡', '常州', '镇江', '南通', '扬州', '盐城', '徐州', '淮安', '连云港', '泰州', '宿迁'],
  '浙江': ['浙江省', '浙江', '杭州', '宁波', '温州', '绍兴', '湖州', '嘉兴', '金华', '衢州', '台州', '丽水', '舟山'],
  '安徽': ['安徽省', '安徽', '合肥', '芜湖', '蚌埠', '淮南', '马鞍山', '淮北', '铜陵', '安庆', '黄山', '滁州', '阜阳', '宿州', '六安', '亳州', '池州', '宣城'],
  '福建': ['福建省', '福建', '福州', '厦门', '莆田', '三明', '泉州', '漳州', '南平', '龙岩', '宁德'],
  '江西': ['江西省', '江西', '南昌', '景德镇', '萍乡', '九江', '新余', '鹰潭', '赣州', '吉安', '宜春', '抚州', '上饶'],
  '山东': ['山东省', '山东', '济南', '青岛', '淄博', '枣庄', '东营', '烟台', '潍坊', '济宁', '泰安', '威海', '日照', '临沂', '德州', '聊城', '滨州', '菏泽'],
  '河南': ['河南省', '河南', '郑州', '开封', '洛阳', '平顶山', '安阳', '鹤壁', '新乡', '焦作', '濮阳', '许昌', '漯河', '三门峡', '南阳', '商丘', '信阳', '周口', '驻马店'],
  '湖北': ['湖北省', '湖北', '武汉', '黄石', '十堰', '宜昌', '襄阳', '鄂州', '荆门', '孝感', '荆州', '黄冈', '咸宁', '随州'],
  '湖南': ['湖南省', '湖南', '长沙', '株洲', '湘潭', '衡阳', '邵阳', '岳阳', '常德', '张家界', '益阳', '郴州', '永州', '怀化', '娄底'],
  '广东': ['广东省', '广东', '广州', '深圳', '珠海', '汕头', '佛山', '韶关', '湛江', '肇庆', '江门', '茂名', '惠州', '梅州', '汕尾', '河源', '阳江', '清远', '东莞', '中山', '潮州', '揭阳', '云浮', '博罗县'],
  '广西': ['广西壮族自治区', '广西', '南宁', '柳州', '桂林', '梧州', '北海', '防城港', '钦州', '贵港', '玉林', '百色', '贺州', '河池', '来宾', '崇左'],
  '海南': ['海南省', '海南', '海口', '三亚', '三沙', '儋州'],
  '重庆': ['重庆市', '重庆'],
  '四川': ['四川省', '四川', '成都', '自贡', '攀枝花', '泸州', '德阳', '绵阳', '广元', '遂宁', '内江', '乐山', '南充', '眉山', '宜宾', '广安', '达州', '雅安', '巴中', '资阳'],
  '贵州': ['贵州省', '贵州', '贵阳', '六盘水', '遵义', '安顺', '毕节', '铜仁'],
  '云南': ['云南省', '云南', '昆明', '曲靖', '玉溪', '保山', '昭通', '丽江', '普洱', '临沧'],
  '西藏': ['西藏自治区', '西藏', '拉萨', '日喀则', '昌都', '林芝', '山南', '那曲'],
  '陕西': ['陕西省', '陕西', '西安', '铜川', '宝鸡', '咸阳', '渭南', '延安', '汉中', '榆林', '安康', '商洛'],
  '甘肃': ['甘肃省', '甘肃', '兰州', '嘉峪关', '金昌', '白银', '天水', '武威', '张掖', '平凉', '酒泉', '庆阳', '定西', '陇南'],
  '青海': ['青海省', '青海', '西宁', '海东'],
  '宁夏': ['宁夏回族自治区', '宁夏', '银川', '石嘴山', '吴忠', '固原', '中卫'],
  '新疆': ['新疆维吾尔自治区', '新疆', '乌鲁木齐', '克拉玛依', '吐鲁番', '哈密'],
  '台湾': ['台湾省', '台湾', '台北', '高雄', '台中', '台南', '新竹', '嘉义'],
  '香港': ['香港特别行政区', '香港'],
  '澳门': ['澳门特别行政区', '澳门']
};

// 嵌入 JSON 数据

// 初始化地图
let myChart = echarts.init(document.getElementById('map-container'));

// 加载中国地图数据
$.get('https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json', function(chinaJson) {
  echarts.registerMap('china', chinaJson);
  
  // 配置地图选项
  const option = {
      title: {
          text: '中国地图',
          left: 'center'
      },
      tooltip: {
          trigger: 'item',
          formatter: '{b}'
      },
      visualMap: {
          min: 0,
          max: 100,
          left: 'left',
          top: 'bottom',
          text: ['高', '低'],
          calculable: true,
          inRange: {
              color: ['#e0f3f8', '#2c7fb8']
          }
      },
      series: [{
          name: '中国',
          type: 'map',
          map: 'china',
          roam: true,
          emphasis: {
              label: {
                  show: true
              }
          },
          data: []
      }]
  };

  // 设置地图配置
  myChart.setOption(option);

  // 点击事件处理
  myChart.on('click', function(params) {
      const provinceName = params.name;
      console.log('点击的省份:', provinceName);
      loadProvinceData(provinceName);
  });
});

// 加载省份数据
function loadProvinceData(provinceName) {
  console.log('正在加载省份数据:', provinceName);
  
  // 显示加载状态
  $('#data-content').html('<p class="loading">正在加载数据...</p>');

  // 获取省份的所有可能名称
  const provinceNames = provinceMap[provinceName] || [provinceName];
  console.log('省份名称列表:', provinceNames);

  // 改进的地址匹配函数
  const matchAddress = (address, names) => {
    if (!address) return false;
    
    // 检查县级市映射
    for (const [county, province] of Object.entries(countyToProvince)) {
      if (address.includes(county) && province === provinceName) {
        return true;
      }
    }
    
    // 处理直辖市和特别行政区
    if (['北京', '天津', '上海', '重庆', '香港', '澳门'].includes(provinceName)) {
      return names.some(name =>
        address.startsWith(name) ||
        address.includes(`${name}市`) ||
        address.includes(`${name}特别行政区`)
      );
    }
    
    // 处理省份 - 简化匹配逻辑
    return names.some(name =>
      address === name || // 完全匹配
      address.startsWith(name) ||
      address.includes(`${name}省`) ||
      address.includes(`${name}自治区`) ||
      address.includes(`${name}市`)
    );
  };

  // 过滤对应省份的数据
  const provinceData = {
      first: firstData.filter(item => matchAddress(item.address, provinceNames)),
      second: secondData.filter(item => matchAddress(item.address, provinceNames)),
      third: thirdData.filter(item => matchAddress(item.address, provinceNames))
  };

  console.log('过滤后的数据:', {
      first: provinceData.first.length,
      second: provinceData.second.length,
      third: provinceData.third.length
  });

  // 显示数据
  displayData(provinceName, provinceData);
}

// 显示数据
function displayData(provinceName, data) {
  const formatData = (items) => {
      if (!items || items.length === 0) return '<p class="no-data">暂无数据</p>';
      return items.map(item => `
          <div class="company-info">
              <h4>${item.name || '未知公司'}</h4>
              <p><strong>地址：</strong>${item.address || '地址未知'}</p>
              <p><strong>描述：</strong>${item.message || '暂无描述'}</p>
          </div>
      `).join('');
  };

  const content = `
      <h3>${provinceName}</h3>
      <div class="data-section">
          <h4>第一组数据：</h4>
          <div class="data-content">
              ${formatData(data.first)}
          </div>
      </div>
      <div class="data-section">
          <h4>第二组数据：</h4>
          <div class="data-content">
              ${formatData(data.second)}
          </div>
      </div>
      <div class="data-section">
          <h4>第三组数据：</h4>
          <div class="data-content">
              ${formatData(data.third)}
          </div>
      </div>
  `;
  $('#data-content').html(content);
}

// 窗口大小改变时，调整地图大小
window.addEventListener('resize', function() {
  myChart.resize();
});